


/**
 * 1. 函数参数类型指定 函数名(形参:类型 )
 * 2. 函数返回值类型指定  函数名(形参:类型 ): 返回值类型
 * 3. 可选参数问题 函数名(形参?:类型 ): 返回值类型
 * 4. 参数默认值问题 函数名(形参:类型 = 默认值 ): 返回值类型
 */

//函数类型指定
//1.参数类型指定
//函数(参数名:类型,参数名:类型)
let login = (account:string,password:string)=>{
     console.log(account,password);
}
let login1 = (account:any,password:string|number)=>{
    console.log(account,password);
}
//2.返回值类型指定
let login2 = (account:any,password:string|number):string=>{
    console.log(account,password);
    return "";
}
let login3 = (account:any,password:string|number):string|number=>{
    console.log(account,password);
    return "";
}
let login4 = (account:any,password:string|number):string[]=>{
    console.log(account,password);
    // [account,password]
    return [account,password];
}
let login5 = (account:any,password:string|number):[string,string]=>{
    console.log(account,password);
    // [account,password]
    return [account as string,password as string];
}

//3.可选参数问题
//默认必须按照声明的形参传递
//可以不传递 ? 0 / 1 
let login6 = (account:string,password?:string):string=>{
    return account+password;
}

login6("root");
//4.参数的默认值问题
let login7 = (account:string = "xxx",password:string ="xxx"):string=>{
    return account+password;
}


